/**
 * 环境变量管理工具
 * 统一处理环境变量，确保在所有平台上都能正确访问
 */

// 默认环境变量值，用于在无法访问 process.env 时作为备选
export const defaultEnv = {
  TARO_APP_API_BASE_URL: 'https://api.danxi.tech',
  TARO_APP_IMAGE_BASE_URL: 'https://jiazhaoyikaotong-1313266260.picsh.myqcloud.com',
};

/**
 * 安全获取环境变量的值
 * @param key 环境变量名称
 * @param defaultValue 默认值
 * @returns 环境变量值或默认值
 */
export const getEnv = <T = string>(key: string, defaultValue?: T): T => {
  // 使用可选链操作符安全访问 process.env
  if (typeof process !== 'undefined' && process.env && process.env[key]) {
    return process.env[key] as unknown as T;
  }
  // 如果有传入默认值，则返回默认值
  if (defaultValue !== undefined) {
    return defaultValue;
  }
  // 如果在默认环境变量中有对应的值，则返回该值
  if (defaultEnv[key as keyof typeof defaultEnv]) {
    return defaultEnv[key as keyof typeof defaultEnv] as unknown as T;
  }
  // 返回空字符串作为最后的备选
  return '' as unknown as T;
};

/**
 * 获取API基础URL
 */
export const getApiBaseUrl = (): string => {
  return getEnv('TARO_APP_API_BASE_URL', defaultEnv.TARO_APP_API_BASE_URL);
};

/**
 * 获取API基础URL
 */
export const getImageBaseUrl = (): string => {
  return getEnv('TARO_APP_IMAGE_BASE_URL', defaultEnv.TARO_APP_IMAGE_BASE_URL);
};
